package main

import (
	"fmt"
	"sync"
)
var wg sync.WaitGroup // 创建同步等待组对象
func main()  {
	/*
	WaitGroup：同步等待组
		可以使用Add(),设置等待组中要 执行的子goroutine的数量，
		启动子 goroutine，
		在main 函数中，使用wait(),让主程序处于等待状态。
			直到等待组中子程序执行完毕。解除阻塞

		子gorotuine对应的函数中。wg.Done()，用于让等待组中的子程序的数量减1
	 */
	 //设置等待组中，要执行的goroutine的数量
	 wg.Add(1)
	go fun5()
	go fun6()
	fmt.Println("main进入阻塞状态。。。等待wg中的子goroutine结束。。")
	wg.Wait() //表示main goroutine进入等待，意味着阻塞
	fmt.Println("main，解除阻塞。。")

}
func fun5()  {
	for i:=1;i<=1000;i++{
		fmt.Println("fun5.。。i:",i)
	}
	wg.Done() //给wg等待中的执行的goroutine数量减1.同Add(-1)
}
func fun6()  {
	defer wg.Done()
	for j:=1;j<=1000;j++{
		fmt.Println("\tfun6..j,",j)
	}
}
